package com.example.design.beautiful.unit_test.interface_auth_fun;

import java.util.Map;

/**
 * 从业务模型上来说，不应该属于这个类的属性和方法，不应该被放到这个类里
 * 比如 URL、AppID 这些信息，从业务模型上来说，不应该属于 AuthToken，所以我们不应该放到这个类中。
 * 在设计类具有哪些属性和方法的时候，不能单纯地依赖当下的需求，还要分析这个类从业务模型上来讲，理应具有哪些属性和方法。
 * 这样可以一方面保证类定义的完整性，另一方面不仅为当下的需求还为未来的需求做些准备。
 */
public class AuthToken {
    String token;

    private static final long DEFAULT_EXPIRED_TIME_INTERVAL = 1*60*1000;

    private long createTime;

    private long expriedTimeInterval = DEFAULT_EXPIRED_TIME_INTERVAL;

    public AuthToken(String token, long createTime) {
        this.token = token;
        this.createTime = createTime;
    }

    public AuthToken(String token, long createTime, long expriedTimeInterval) {
        this.token = token;
        this.createTime = createTime;
        this.expriedTimeInterval = expriedTimeInterval;
    }

    public static AuthToken create(String baseUrl, long createTime, String password,String appId){
        return new AuthToken(baseUrl, createTime);
    }

    public String getToken() {
        return token;
    }

    public boolean isExpired(){
        return true;
    }

    public boolean isMatch(AuthToken authToken){
        return true;
    }
}
